package com.hlkj.pay.app.merchant;
/*
 * Hlpay-Plus aggregate payment system.
 * Copyright (c) 2024-2025 Hlpay Team Copyright has the right of final interpretation.
 */

import com.hlkj.framework.common.pojo.CommonResult;
import com.hlkj.pay.dto.merchant.CashierConfigDto;
import com.hlkj.pay.dto.merchant.RouterConfigDto;
import com.hlkj.pay.enums.MerchantEnum;
import com.hlkj.pay.infrastructure.model.merchant.MerchantAccessInfoDO;
import com.hlkj.pay.vo.common.req.CommonUpdateStatusReq;
import com.hlkj.pay.vo.merchant.req.UpdateStatusReq;
import com.hlkj.pay.vo.merchant.resp.app.MerchantAppChannelDetailResp;
import com.hlkj.pay.vo.merchant.resp.app.MerchantAppResp;
/**
 * @author HlpayTeam
 * @date 2024/09/12 11:39
 */
public interface IMerchantInfoApplicationAppService {

	/**
	 * add merchant app info
	 * @param merchantInfoUpdateReq
	 * @return
	 */
	CommonResult<String> saveMerchantApp(MerchantAppResp merchantInfoUpdateReq);
	/**
	 * update merchant app info
	 * @param merchantInfoUpdateReq
	 * @return
	 */
	CommonResult<Void> updateMerchantApp(MerchantAppResp merchantInfoUpdateReq);
	/**
	 * update merchant app status
	 * @param commonUpdateStatusReq
	 * @return
	 */
	CommonResult<Void> updateMerchantAppStatus(CommonUpdateStatusReq commonUpdateStatusReq);
	/**
	 *
	 * @param id
	 * @return
	 */
	CommonResult<Void> delMerchantApp(Long id);
	/**
	 * save channel
	 * @param merchantAppChannelDetailResp
	 * @return
	 */
	
	CommonResult<String> saveMerchantAppChannel(MerchantAppChannelDetailResp merchantAppChannelDetailResp);
	/**
	 * update channel
	 * @param merchantAppChannelDetailResp
	 * @return
	 */
	CommonResult<Void> updateMerchantAppChannel(MerchantAppChannelDetailResp merchantAppChannelDetailResp);
	/**
	 * update channel status
	 * @param updateStatusReq
	 * @return
	 */
	CommonResult<Void> updateMerchantAppChannelStatus(UpdateStatusReq updateStatusReq);
	/**
	 * del channel
	 * @param id
	 * @return
	 */
	CommonResult<Void> delMerchantAppChannel(String code);
	/**
	 *
	 * @param merchantAccessInfoDO
	 * @param appChannelParams
	 */
	void addAppChannelInfo(MerchantAccessInfoDO merchantAccessInfoDO, String appChannelParams,String mchChannelCode, MerchantEnum.DATA_RELATION_TYPE dataRelationType);

	/**
	 *
	 * @param updateStatusReq
	 * @return
	 */

    CommonResult<Void> updateLimitRouter(UpdateStatusReq updateStatusReq);

	/**
	 *
	 * @param routerConfigDto
	 * @return
	 */
	CommonResult<Void> routerConfig(RouterConfigDto routerConfigDto);

	/**
	 *
	 * @param routerConfigDto
	 * @return
	 */
	CommonResult<Void> cashierConfig(CashierConfigDto routerConfigDto);
}
